Field
The present disclosed embodiments relate generally to computing devices, and more specifically to scheduling tasks in multi-processor computing devices.
Background
Computing devices including devices such as desktop computers, mainframe computers, smartphones, tablet computers, gaming devices, and laptop computers are now ubiquitous. These communication devices are now capable of running a variety of applications (also referred to as “apps”) and many of these devices include multiple processors to process tasks (also referred to as processes) that are associated with apps. In many instances, multiple processors (also referred to herein as CPUs) are integrated as a collection of processor cores within a single functional subsystem.
It is known that a scheduler (e.g., an operating system scheduler) may apportion processing loads across the multiple processors. For example, schedulers may schedule an order in which tasks are executed by the processors (e.g., based upon scheduling class/policy and process priorities); schedulers may select a particular processor for a newly initiated task, and schedulers may balance processes between multiple processors for load balancing purposes (e.g., by migrating a task from one core to another core).
Heterogeneous systems have processors that differ with regard to their performance and power characteristics. Some processors, for example, may offer peak performance better than other processors, but at a cost of consuming more power. These types of processors may be referred to as “high performance” or “performance efficient” processors. Other processors that draw less power, and in some instances offer less peak performance, may be referred to as “power efficient” processors. But typical schedulers are unaware of how power consumption may change by running on power efficient processors. As a consequence, current systems are suboptimal or otherwise unsatisfactory.